package com.yunji.order.bo;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @Project: yunji-coffee
 * @Package: com.yunji.order.payable
 * @Title: WechatParam
 * @Description: 支付请求参数
 * <p>
 * History:
 * Date                     Version     Author          Summary
 * ============================================================
 * 2024-04-15 20:37:24      V1.0        HuaAo       新建类
 */
@Data
public class PayableBO implements Serializable {
    private static final long serialVersionUID = -7562268766800855630L;

    @ApiModelProperty("微信交易ID")
    private String tradeId;

    @ApiModelProperty("微信用户OPENID")
    private String openId;

    @ApiModelProperty("平台交易流水号")
    private String tradeCode;

    @ApiModelProperty("平台退款流水号")
    private String refundCode;

    @ApiModelProperty("平台交易描述")
    private String tradeContent;

    @ApiModelProperty("平台交易金额")
    private long amount;

    @ApiModelProperty("平台交易金额")
    private BigDecimal payout;

    @ApiModelProperty("平台退款金额")
    private long refund;

    @ApiModelProperty("三方支付响应信息")
    private String result;

    @ApiModelProperty("真实姓名")
    private String realName;

//    @ApiModelProperty("通知地址")
//    private String notifyURL;

    @ApiModelProperty(name = "商家批次单号")
    private String outBatchNo;
    @ApiModelProperty(name = "微信批次单号")
    private String batchId;
    @ApiModelProperty(name = "批次创建时间")
    private String createTime;
    @ApiModelProperty(name = "批次状态(ACCEPTED:已受理;PROCESSING:转账中;FINISHED:已完成;CLOSED:已关闭;)")
    private String batchStatus;

    public PayableBO(String openId, String tradeCode, String tradeContent, long amount) {
        this.openId = openId;
        this.tradeCode = tradeCode;
        this.tradeContent = tradeContent;
       // this.notifyURL = notifyURL;
        this.amount = amount;
    }

    public PayableBO(String tradeCode, String refundCode, long amount, long refund) {
        this.tradeCode = tradeCode;
        this.refundCode = refundCode;
       // this.notifyURL = notifyURL;
        this.amount = amount;
        this.refund = refund;
    }

    public PayableBO(String openId, String tradeCode, String tradeContent, String realName, long amount, BigDecimal payout) {
        this.openId = openId;
        this.tradeCode = tradeCode;
        this.tradeContent = tradeContent;
       // this.notifyURL = notifyURL;
        this.realName = realName;
        this.amount = amount;
        this.payout = payout;
    }
}
